package com.scheduling.machine.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.scheduling.machine.dto.MachineTypeQueryDTO;
import com.scheduling.machine.entity.MachineType;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

/**
 * 机器类型数据访问层
 *
 * @author 开发团队
 * @since 2025-05-29
 */
@Mapper
public interface MachineTypeMapper extends BaseMapper<MachineType> {

    /**
     * 分页查询机器类型列表
     *
     * @param page     分页对象
     * @param queryDTO 查询条件
     * @return 机器类型分页列表
     */
    IPage<MachineType> selectMachineTypePage(Page<MachineType> page, @Param("query") MachineTypeQueryDTO queryDTO);

    /**
     * 检查机器类型名称是否存在
     *
     * @param typeName  机器类型名称
     * @param excludeId 排除的ID（用于更新时检查）
     * @return 存在的数量
     */
    Integer checkTypeNameExists(@Param("typeName") String typeName, @Param("excludeId") String excludeId);

    /**
     * 查询最大的以MT开头的机器类型编号
     *
     * @return 最大的以MT开头的机器编号数字部分
     */
    @Select("SELECT MAX(CAST(SUBSTRING(machine_type_id, 3) AS UNSIGNED)) FROM machine_type WHERE machine_type_id LIKE" +
            " 'MT%'")
    Integer selectMaxMachineTypeNumber();
} 